An important portion of a software development process is the testing of the software. Testing normally occurs in several phases, for example, engineering test, development test, alpha testing and beta testing. Such testing helps to ensure that a software product meets its requirements, including functioning in the target hardware and software environment.
Numerous tools have been developed to facilitate software testing. Prominent among such tools is the Test Environment Toolkit (TET), commercially available from The Open Group of San Francisco, Calif. It is to be appreciated that The Open Group and others offer a variety of products, including successors to TET. Another well known testing tool is “Xrunner,” commercially available from Mercury Interactive of Sunnyvale, Calif.
Such testing tools generally automate functional testing to ensure that applications work as expected. They may record business processes into test scripts, allow for script enhancements as the application is developed or updated, execute scripts, report results and enable script reusability when an application is modified or upgraded. Test tools generally take the form of a test driver that uses a framework to support testing across multiple hardware platforms and/or operating systems. Such toolkits can handle administration, reporting and sequencing of tests, providing a common user interface for a test administrator to develop tests.
Unfortunately, as software complexity has continued to increase, such existing tools have been found to be lacking certain functions or capabilities. For example, existing tools generally do not enable test systems to be reinstalled during testing. This deficiency is particularly problematic if the target application requires installation of new software as part of the solution. Such a capability would also be useful to capture a benefit of testing multiple levels of a software solution as they become available, without discarding test results from previous testing.
Another desirable test function not presently available is the ability of a test system to reboot, e.g., restart an operating system, during the test. Restarting, or reinitializing, an operating system during a test has numerous benefits, including recovery from fault conditions and automated testing of different operating systems without human intervention.
Still another desirable feature not presently available is support for multiple synchronizations of multiple test systems in a testing environment.
Unfortunately, no existing software test systems provide these functions.
Thus a need exists for automatic software testing. A further need exists for automatic software testing which enables reinstallation test systems and rebooting of operating systems during testing. A still further need exists to meet the previously identified needs in a manner that is complimentary and compatible with conventional computer system testing systems and processes.